package myzd.client.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import myzd.domain.enums.*;

import java.util.Date;
import java.util.List;

/**
 * @author Diamond
 */
@Data
public class ServiceOrder {
  /**
   * 工单编号
   */
  private Long id;

  /**
   * 倾向哪种方式治疗
   */
  private TreatmentType[] treatment;

  /**
   * 订单编号
   */
  private Long orderNumber;

  /**
   * 订单状态
   */
  private OrderStatusType status;
  /**
   * 预约单状态
   */
  private AppointmentStatus appointmentStatus;

  /**
   * 工单的订单模板类型
   */
  private OrderType orderType;
  /**
   * 从何处了解我们
   */
  private OrderSourceChannel[] sourceChannel;
  /**
   * 订单来源
   */
  private OrderSourceType sourceType;
  /**
   * 服务类型
   */
  private OrderServiceType serviceType;

  /**
   * 创建人Id
   */
  private String creatorId;
  /**
   * 创建人名字
   */
  private String creatorName;
  /**
   * 创建人部门
   */
  private String creatorDepartment;
  /**
   * 受理时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date assigneeTime;
  /**
   * 受理人ID
   */
  private String assigneeId;
  /**
   * 受理人名字
   */
  private String assigneeName;

  /**
   * 剩余回复时间（分钟数）
   */
  @ApiModelProperty("剩余回复时间（分钟数）")
  private Long assigneeRemainTime;

  /**
   * 受理人科室
   */
  private String assigneeDepartment;
  /**
   * 受理人当前工单的截止日期
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date assigneeDeadline;

  /**
   * 患者姓名
   */
  private String patientName;

  /**
   * 患者年龄
   */
  private Integer patientAge;

  /**
   * 患者性别
   */
  private Gender patientGender;

  /**
   * 患者身份证
   */
  private String patientIdCard;

  /**
   * 患者电话
   */
  private String patientPhone;

  /**
   * 患者所在省份id
   */
  private Integer patientProvinceId;


  /**
   * 患者所在省份名字
   */
  private String patientProvinceName;


  /**
   * 患者所在城市id
   */
  private Integer patientCityId;


  /**
   * 患者所在城市名字
   */
  private String patientCityName;

  /**
   * 曾就诊的医院ID
   */
  private Integer previousHospitalId;
  /**
   * 曾就诊的医院名字
   */
  private String previousHospitalName;

  /**
   * 当地医生建议
   */
  private String previousDoctorSuggest;

  /**
   * 手术指征
   */
  private Boolean indications;

  /**
   * 主要诊断疾病ID
   */
  private Integer diseaseId;

  /**
   * 主要诊断疾病名称
   */
  private String diseaseName;

  /**
   * 疾病描述
   */
  private String diseaseDescription;

  /**
   * 期望面诊城市Id
   */
  private Integer expectedCityId;

  /**
   * 期望面诊城市
   */
  private String expectedCityName;

  /**
   * 期望面诊省份id
   */
  private Integer expectedProvinceId;

  /**
   * 期望面诊省份名字
   */
  private String expectedProvinceName;

  /**
   * 期望面诊专家ID
   */
  private Integer expectedDoctorId;

  /**
   * 期望面诊专家名字
   */
  private String expectedDoctorName;
  /**
   * 期望面诊专家是否接收备选
   */
  private Boolean expectedDoctorAlternative;

  /**
   * 期望最早面诊日期
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date expectedAppointmentStartDate;

  /**
   * 期望最晚面诊日期
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date expectedAppointmentDueDate;

  /**
   * 期望面诊医院ID
   */
  private Integer expectedAppointmentHospitalId;


  /**
   * 期望面诊医院
   */
  private String expectedAppointmentHospitalName;


  /**
   * 医学建议的医生列表
   */
  private List<RecommendDoctor> recommendDoctors;


  /**
   * 期望面诊医院是否接收备选
   */
  private Boolean expectedAppointmentHospitalAlternative;


  /**
   * 医生收款账户姓名
   */
  private String doctorAccountName;

  /**
   * 医生收款账户信息
   */
  private String doctorAccountInfo;

  /**
   * 医生收款账户身份证
   */
  private String doctorAccountIdentity;


  /**
   * 收款备注
   */
  private String appointmentFeeRemark;

  private Integer doctorId;
  private Integer doctorUserId;
  private String doctorName;
  private String doctorPhone;
  private String doctorMedicalTitle;
  private Integer doctorHospitalId;
  private String doctorHospitalName;
  private String doctorDepartment;
  private Integer appointmentFee;
  private Integer platformFee;
  private Integer doctorFee;
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date appointmentDate;
  /**
   * 回访日期
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date returnVisitDate;
  /**
   * 回访方式
   */
  private ReturnVisitType returnVisitType;
  /**
   * 实际面诊日期
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date actualAppointmentDate;
  /**
   * 更改日期原因
   */
  private DateChangeReason dateChangeReason;
  /**
   * 回访记录
   */
  private String returnVisitRemark;
  /**
   * 满意程度
   */
  private Integer returnVisitSatisfaction;

  /**
   * 检查资料完成日期
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date previousAppointmentDate;
  /**
   * 完成工地的受理人Id
   */
  private String completeAssigneeId;
  /**
   * 完成工地的受理人的名字
   */
  private String completeAssigneeName;
  /**
   * 完成工地的受理人的部门Id
   */
  private String completeAssigneeDepartment;

  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date createdAt;

  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date modifiedAt;
}
